package com.example.blogsystem.common;

import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.util.UUID;

public class PassWordUtils {
    /**
     * 给密码加盐
     *
     * @param password
     * @return
     */
    public static String encrypt(String password) {
        // 使用 UUID 作为盐值
        String salt = UUID.randomUUID().toString().replace("-", "");
        // 盐值+密码 再使用 md5 的方式进行生成新密码
        String saltPassword = DigestUtils.md5DigestAsHex((salt + password).getBytes());
        // 生成最终密码 盐值$密码
        String finalPassword = salt + "$" + saltPassword;
        return finalPassword;
    }

    /**
     * @param password 明文密码
     * @param salt     固定的盐值
     * @return
     */
    public static String encrypt(String password, String salt) {
        // 生成一个加盐之后的密码
        String saltPassword = DigestUtils.md5DigestAsHex((salt + password).getBytes());
        // 生成最终密码 盐值$密码
        String finalPassword = salt + "$" + saltPassword;
        return finalPassword;
    }

    /**
     * @param inputPassword
     * @param finalPassword
     * @return
     */
    public static boolean check(String inputPassword, String finalPassword) {
        if (StringUtils.hasLength(inputPassword) && StringUtils.hasLength(finalPassword)) {
            // 得到盐值
            String salt = finalPassword.substring(0, 32);
            String confirmPassword = encrypt(inputPassword, salt);
            if (finalPassword.equals(confirmPassword)) {
                return true;
            }
        }
        return false;
    }
}
